home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Mac Games Volume 5 #3
/
IMG 46 Vol 5-3.iso
/
More Goodies
/
More For Your Game
/
Dark Forces
/
Documentation ƒ
/
DF Editors' Guide
/
INF Guide
< prev
next >
Wrap
Text File
|
1996-08-03
|
37KB
|
1,259 lines
[Best viewed with COURIER-10]
…ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕª
∫ DARK FORCES INF FILE FORMAL DESCRIPTION ∫
∫ version 3 ∫
∫ by Jereth Kok (kokjm@stmichaels.vic.edu.au) ∫
"ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕº
Acknowledgements:
-----------------
LucasArts Entertainment Company -- creators of Dark Forces
Yves Borckmans -- creator of DFUSE & WDFUSE
Ben & Pat McBride -- makers of the DFUSE tutorials
Introduction
------------
This file (INFFILE.TXT) gives an formal description of all of the functions
of the .INF file, which controls the dynamics in a level. Beginners should
use it as a learning tool, while people experienced with editing levels can
use it as a reference.
I assume that anyone reading this file is a user of Yves Borckmans' DFUSE
of WDFUSE.
Note: Anything significant which I've added in version 2 is marked by [NEW]
Note: Anything significant which I've added in version 3 is marked by [NEW3]
CONTENTS
--------
1. INF file overview
2. Sequence variables
3. Elevators
4. Triggers
5. Teleporter chutes
6. [NEW] item: level
7. Messages
8. Miscellaneous
1. INF (INFormation) file overview
----------------------------------
The INF file contains information on the dynamics of a level. It brings to
life the static geometry set by a LEV file. This is similar to DOOM's sector
tags, linedef actions, and some sector flags that pulsate the light and scroll
walls etc., but much more powerful because the INF language allows you to
customize everything.
[NEW] Information in the INF file is defined by "items". The number of items
is stated at the top of the file after the magic, version and LEVELNAME. This
must be updated each time an item is added. There are three types of items -
sector, line, and level. Here is how they are entered as an item in the INF
file.
| item: sector name: [sector name]
| seq
| ....
| seqend
| item: line name: [sector name] num: [wall no.]
| seq
| ....
| seqend
| item: level
| seq
| ....
| seqend
As you can see, all three types of items have a sequence delimited by "seq"
"seqend", same as in the .O file. The sequence contains all of the
information on that particular sector or line.
[NEW] The three class types in INF files are elevators, triggers and
the teleporter chute. Sectors can be used as all three while lines can only
be used as triggers (obviously!)
More than one "class" can be designated to a sector. i.e. you can have a
sector which is more than one types of elevator or a sector that is both an
elevator and a trigger. All classes are placed between the same seq and
seqend of the item.
2. SEQUENCE VARIABLES
---------------------
Firstly, the possible variables that can be included in the sequence of
elevators and triggers must be understood. Note that all of these variables
may not be used in every elevator or trigger. That is, a particular elevator
or trigger may only contain a few of these variables.
The variables:
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ stop (elevators) ≥
≥ master (elevators) ≥
≥ event_mask (elevators/triggers) ≥
≥ event (triggers) ≥
≥ entity_mask (triggers) ≥
≥ speed (elevators) ≥
≥ center (elevators) ≥
≥ angle (elevators) ≥
≥ key (elevators) ≥
≥ client (triggers) ≥
≥ slave (elevators) ≥
≥[NEW3] flags (elevators) ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
Here are descriptions and explanations on the usage of each of the variables.
Anything in square brackets - [] - need to be replaced with appropriate
values.
stop
----
description:
A stop is a value that an elevator can arrive at. This value varies depending
on the type of elevator, and can be floor altitude, ceiling altitude,
ambience, degrees...... There are two values to be given.
[NEW3] The first value can be given in three ways:
| [num] -- absolute stop
| @[num] -- relative stop
| [sectorname] -- equal the value of the sector [sectorname]
(eg. for an elevator move_floor it will move to the
same floor altitude as sector [sectorname])
[NEW3] The second value can be given in 4 ways:
| [time] -- time in sec that elevator remains at stop
| hold -- elevator will remain at stop indefinitely
| terminate -- elevator will stay at the stop permanently
| complete -- mission will be complete when elev arrives at stop
usage:
| stop: [value1] [value2]
master
------
description:
A master value can either be on or off. If master is on, the elevator will
function. If master is off, the elevator won't function, even if the
event_mask (more on this later!) is carried out or a message (more on this
later too) is sent, telling it to move. There's no point setting master: on
in the INF file, though, because elevators are always on be default.
usage:
| master: on/off
event_mask
----------
description:
Event_mask is a value which determines under what conditions an elevator or
trigger will function. For an elevator, the conditions will move it
to its next stop. For a trigger, the conditions determine how it can be
triggered. These are the possible values:
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ 0 Nothing ≥
≥ 1 Cross line from front side ≥
≥ 2 Cross line from back side ≥
≥ 4 Enter sector ≥
≥ 8 Leave sector ≥
≥ 16 Nudge line from front side / Nudge sector from inside ≥
≥ 32 Nudge line from back side / Nudge sector from outside ≥
≥ 64 Explosion ≥
≥ 256 Shoot at line (see entity_mask) ≥
≥ 512 Land on floor of sector ≥
≥ ≥
≥ Custom values (see event:) Set off by a trigger with an event: ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
If you want a sector or line to have more than one of these values, then add
the desired values up. For example, an elevator that can be operated by
entering the sector or nudging in from inside has event_mask: 20 (16 + 4).
usage:
| event_mask: [value]
event
-----
description:
Event creates a custom event value. A trigger can be given a custom event
value, and any elevator with this event value as its event_mask value will
operate when the trigger is triggered. The custom event value has to be a
power of 2 that is 65536 or greater (65536, 131072, 262144, 524288, 1048576
and so on).
This is needed with multi-class elevators where each class is controlled by
a separate switch. For example in the Research Facility (level 4), the sector
called "Corecat" (spins around the Phrik metal) is two classes of elevator -
elevator move_fc and elevator morph_spin2. Two switches control these classes
individually. If the "event" variable was not used, both switches would move
both classes of elevator to its next stop at the same time. Utilising the
"event" variable, it is made possible to have one switch control the spinning
and the other control the moving floor/ceiling.
usage:
| event: [value]
entity_mask
-----------
description:
Entity_mask defines the entity that triggers a trigger. The default
is the player.
Here are the values that are used in the original 14 levels.
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ 1 an enemy (eg. an enemy crossing a line trigger) ≥
≥ 8 one of your weapons (eg. a "shoot" switch) ≥
≥ * or -1 usually used with event_mask: 272 - you can shoot at the ≥
≥ trigger and nudge it ≥
≥ 2147483656 All the bits set except 8 ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
[NEW] In TESTBASE.INF entity_mask is applied to an elevator. This does nothing
and is probably an error made by the programmers.
usage:
| entity_mask: [value]
speed
-----
description:
Speed is a value that determines the speed of an elevator.
Speed: 0 is instantaneous.
usage:
| speed: [value]
center
------
description:
Center defines the X and Z coordinates of the center of revolution of a
spinning sector.
usage:
| center: [x coord] [z coord]
angle
-----
description:
Angle defines the angle in degrees of a scrolling wall, floor or ceiling
texture. Angle also defines the angle in degrees of a horizontally moving
sector. For scrolling walls, angle: 0 is down. For scrolling floors, scrolling
ceilings and moving sectors, angle: 0 is north.
usage:
| angle: [value in degrees]
key
---
description:
The value of key defines which key is needed to operate an elevator. Key is
optional, of course. Just leave it out if you don't want your elevator to
need a key to operate.
usage:
| key: red/blue/yellow
client
------
description:
Client is used with triggers only. It defines which sector the trigger
affects.
usage:
| client: [client sector name]
slave
-----
description:
Slave is optional and is used with elevators only. Slave determines which
sector is a slave of the elevator it is applied to. The slave copies whatever
the elevator does.
usage:
| slave: [slave sector name]
[NEW3] flags
------------
description:
Flags, as far as I know, determine whether or not the player moves with a
morphing or horizontally scrolling elevator.
When no flag value is given the following defaults apply:
elev scroll_floor player moves with floor tx
elev scroll_ceiling player doesn't move
elev morph_move1 player doesn't move
elev morph_move2 player moves with sector
elev morph_spin1 player doesn't spin
elev morph_spin2 player spins with sector
elev rotate_wall player doesn't spin
effects of flags on player:
flags: 0 -- [flr alt] NO move / spin [2nd alt] NO move / spin
flags: 1 -- [flr alt] move / spin [2nd alt] NO move / spin
flags: 2 -- [flr alt] NO move / spin [2nd alt] move / spin
flags: 7 -- [flr alt] move / spin [2nd alt] move / spin
So, you could have something like the shuttle in the Detention Center level
(elev morph_move2). Set it with flags: 2 and you'll move ON the shuttle,
which is a 2nd alt, but won't move on the floor underneath it.
In some places in the original levels, flags is set on vertically moving
elevators like move_floor and move_fc. I'm not sure whether this is a
mistake, or if flags do something different here.
usage:
| flags: 0 / 1 / 2 / 7
3. ELEVATORS
------------
Here are the elevators:
[NEW3] I've grouped these into sector elevators and wall elevators
respectively. Wall elevators affect walls of a sector with certain bits
set to flag 1.
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ elevator change_light ≥
≥ elevator door ≥
≥ elevator door_mid ≥
≥ elevator basic ≥
≥ elevator inv ≥
≥ elevator move_ceiling ≥
≥ elevator move_floor ≥
≥ elevator move_fc ≥
≥ elevator scroll_ceiling ≥
≥ elevator scroll_floor ≥
≥ ≥
≥ elevator change_wall_light ≥
≥ elevator morph_move1 ≥
≥ elevator morph_move2 ≥
≥ elevator morph_spin1 ≥
≥ elevator morph_spin2 ≥
≥ elevator rotate_wall ≥
≥ elevator scroll_wall ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
Here is a description of each elevator class and how to use it. The variables
that are needed for each class are shown. Any variables in {} are optional.
Note that anything in square brackets - [] - must be replaced with
appropriate values.
There can always be an unlimited amount of stops (except for elevator door
and elevator door_mid which don't require stops). The stop values for
each type of elevator are explained.
elevator change_light
---------------------
description: Changing light level (ambience) in sector.
Stop values are sector ambience.
usage:
| class: elevator change_light
| event_mask:
| speed:
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator door
-------------
description: Normal door. Note, that it is easier to just use flag 1 bit 2
on a sector for a normal door. Elevator door is only really
needed for a key door.
Make sure that a sector with this elevator has the
ceiling altitude of the door when it is OPEN!!!
usage:
| class: elevator door
| {master: }
| {key: }
elevator door_mid
-----------------
description: A 2 part door (opens upwards and downwards). Information for
the top and bottom parts are specified individually.
"addon: 0" is the top part
"addon: 1" is the bottom part
The floor and ceiling altitudes of the sector must be of
the door when it is OPEN. The door will split halfway between.
usage:
| class: elevator door_mid
| addon: 0
| speed:
| {key: }
| {master: }
| addon: 1
| speed:
| {key: }
| {master: }
elevator basic
--------------
description: floor that moves up and down.
Stop values are the altitude of the floor.
usage:
| class: elevator basic
| event_mask:
| speed:
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator inv
------------
description: ceiling that moves up and down. Often used for making doors.
Stop values are the altitude of the ceiling.
usage:
| class: elevator inv
| event_mask:
| speed:
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator move_ceiling
---------------------
description: Ceiling that moves up and down. In fact, the same as
elevator inv.
Stop values are the altitude of the ceiling.
usage:
| class: elevator move_ceiling
| event_mask:
| speed:
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator move_floor
-------------------
description: floor that moves up and down. In fact, the same as elevator
basic.
Stop values are the altitude of the floor.
usage:
| class: elevator move_floor
| event_mask:
| speed:
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator move_fc
----------------
description: Floor and ceiling that move up and down together.
Stop values are the altitude of the floor.
usage:
| class: elevator move_fc
| event_mask:
| speed:
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator scroll_ceiling
-----------------------
description: ceiling texture scrolls
Stop values are texture offsets.
usage:
| class: elevator scroll_ceiling
| event_mask:
| speed:
| angle:
| {flags: }
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
elevator scroll_floor
---------------------
description: floor texture scrolls. Player moves with it by default
[see FLAGS]
Stop values are texture offsets.
usage:
| class: elevator scroll_floor
| event_mask:
| speed:
| angle:
| {flags: }
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
elevator change_wall_light
--------------------------
description: Any walls in the sector with flag 1 bit 8 (allow change wall
light) will change ambience.
Stops values are wall light.
usage:
| class: elevator change_wall_light
| event_mask:
| speed:
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator morph_move1
--------------------
description: Any walls in the sector with flag 1 bit 32 (wall morph with
sector) will move.
Stop values are distances on the X-Z (horizontal) plane.
usage:
| class: elevator morph_move1
| event_mask:
| speed:
| angle:
| {flags: }
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator morph_move2
--------------------
description: Any walls in the sector with flag 1 bit 32 (wall morph with
sector) will move. The player will also move relative to the
walls by default. [see FLAGS]
Stop values are distances on the X-Z (horizontal) plane.
usage:
| class: elevator morph_move2
| event_mask:
| speed:
| angle:
| {flags: }
| {key: }
| {slave: }
| {master: }
| stop:
| stop:
| ....
elevator morph_spin1
--------------------
description: Any walls in the sector with flag 1 bit 32 (wall morph with
sector) will spin.
Stop values are angles in degrees.
usage:
| class: elevator morph_spin1
| event_mask:
| speed:
| center:
| {flags: }
| {key: }
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
elevator morph_spin2
--------------------
description: Any walls in the sector with flag 1 bit 32 (wall morph with
sector) will spin. The player will also spin relative to the
walls by default. [see FLAGS]
Stop values are angles in degrees.
usage:
| class: elevator morph_spin2
| event_mask:
| speed:
| center:
| {flags: }
| {key: }
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
elevator rotate_wall
--------------------
description: Any walls in the sector with flag 1 bit 32 (wall morph with
sector) will spin.
Stop values are angles in degrees.
usage:
| class: elevator rotate_wall
| event_mask:
| speed:
| center:
| {flags: }
| {key: }
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
elevator scroll_wall
--------------------
description: Texture(s) of any walls in the sector with flag 1 bit 64/128/
256/512 (allow scroll mid/top/bot/sign texture) will scroll.
Stop values are texture offsets.
usage:
| class: elevator scroll_wall
| event_mask:
| speed:
| angle:
| {slave: }
| {master: }
| {stop: }
| {stop: }
| ....
Just a couple more things - for several of the vertically moving elevators,
it may be necessary to anchor wall textures to prevent unnatural texture
movement (flag 1 bit 16 / 4096)
The PLAYER will move with an "elevator morph_move2" or "elevator morph_spin2",
or if flags are set accordingly, but the floor texture won't scroll, so it
looks unnatural. This is what I suggest - for moving sectors add a
"elevator scroll_floor" with exactly the same stops, angle and speed as the
moving sector, and the floor texture will move together with the
sector. For spinning sectors all you can do is add a single coloured
texture so you can't see the texture movement. The best texture for this
(used by LucasArts too!) is ZPGRYFIL.BM.
4. TRIGGERS
-----------
Here are the triggers:
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ trigger standard ≥
≥ trigger ≥
≥ trigger switch1 ≥
≥ trigger single ≥
≥ trigger toggle ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
Here is a description of each trigger class and how to use it. The variables
that are required by each class are shown. Any variables in {} are optional.
Note that anything in square brackets - [] - must be replaced with
appropriate values.
All triggers can have unlimited clients.
Note: If a specific message is not sent from a trigger to its client, then
the client will just move to its next stop.
trigger standard
----------------
description: This can be applied to a sector (entering, leaving or nudging it)
or a line (crossing it or nudging it).
usage:
| class: trigger standard
| event_mask:
| {entity_mask: }
| client:
| ....
trigger
-------
description: exactly the same as trigger standard as far as I know.
usage:
| class: trigger
| event_mask:
| {entity_mask: }
| client:
| ....
trigger switch1
---------------
description: this is used specifically for switch triggers. Remember, the wall
containing the switch must have a sign which is a switch texture.
usage:
| class: trigger switch1
| event_mask:
| {entity_mask: }
| client:
| ....
trigger single
--------------
description: this is a trigger that can only be used once. Can only be
applied to lines - sectors will be able to be triggered more
than once!
usage:
| class: trigger single
| client:
| event_mask:
| {entity_mask: }
| ....
trigger toggle
--------------
description: this toggles an elevator between stops. Therefore, the client
sector MUST have more than one stop.
usage:
| class: trigger toggle
| event_mask:
| {entity_mask: }
| client:
| ....
5. TELEPORTER CHUTES
--------------------
Teleporter chutes are a special third element of the INF file. They are not
elevators or triggers. Their function is to teleport the player to another
sector.
NOTE:
Dark Forces teleporter chutes do not have the same intention as the
teleporters in DOOM. In DOOM, teleporters are deliberate and are just another
fun aspect of a level. In Dark Forces, they are not intended to even be
noticed. They are intended to make it look like the player has just
fallen through a chute into a layer below, for example, in the Robotics
Facility where you fall into the gas room, and Jabba's Ship where you
fall into the area where you rescue Jan. These cases could only be
accomplished through teleporter chutes because the other method (using
a same sector in both layers) would mean making double adjoin/mirror/walks
for the walls of that sector - something not possible.
Note that the teleporter chute and its target MUST occupy the same physical
space although they may have different floor and ceiling altitudes. Otherwise,
it may be possible to teleport outside of a sector.
[NEW] Yves Borckmans told me of a method for making REAL teleporters, like
in DOOM. The "teleporter pad" teleports you up to a sector which is a
super-fast elevator scroll_floor. Before you notice anything, you are
scrolled over the distance and dumped through another teleporter chute into
the "teleporter destination"! Now if we could just find out how to include
some special fx.....
usage:
| class: teleporter chute
| target: [target sector's name]
6. [NEW] ITEM: LEVEL
--------------------
This is used to play entire level ambient sounds. Quite useless, but it
might be needed if you've got a level with lots of water or wind and it saves
you from putting lots of sound objects all over the place.
This is never successfully used in the original levels. There is, however, a
failed attempt in EXECUTOR.INF which is where I found out about it from.
usage:
| item: level
| seq
| amb_sound: [voc file]
| seqend
7. MESSAGES
-----------
[NEW3]
Messages are sent from triggers and elevators to other triggers, elevators,
and in some cases just regular sectors and lines. (except message: lights,
which is sent to the system) They do various things to their recipients.
Messages are placed in the sequence of elevators and triggers.
They all have this general syntax:
| message: [stop] [sectorname[(wallnum)]] [msg] [parameters]
[stop] is used when a message is sent from an elevator. It is sent when the
elevator ARRIVES at that stop.
[sectorname[(wallnum)]] This is the reciever of a message. (wallnum) is for
if the reciever is a wall. Omit if reciever is a
sector or SYSTEM.
[msg] The message
[parameters] Parameters specific to the type of message.
Here are the messages:
⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
≥ complete ≥
≥ done ≥
≥ goto_stop ≥
≥ next_stop ≥
≥ prev_stop ≥
≥ master_on ≥
≥ master_off ≥
≥ m_trigger ≥
≥ clear_bits ≥
≥ set_bits ≥
≥ wakeup ≥
≥ [NEW] lights ≥
¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
[NEW] Note: in FUELSTAT.INF there is a "message: trigger". This does not do
anything if removed, so I think it's not really a message and was an error
made by the programmers.
Note that for messages that are sent from triggers to elevators, the client of
the trigger must first be specified (obviously).
When messages are sent from an elevator, they are sent when it ARRIVES at a
stop. Therefore, messages can't be sent from stop 0 at the start of a level.
A description of each message and its parameters follows.
complete
--------
Description: Tells the GOL file that a trigger goal has been completed.
Also moves recipient elevator to its next stop.
Sent from a trigger or an elevator.
Sent to an elevator (preferably to your "complete" elevator so
you don't have to send another message: next_stop to it as well.)
Parameters:
[num] -- refers to the "TRIG: [num]" in the GOL file. The corresponding
goal in your PDA will then be shown to be complete (if your
ANIM is done correctly, that is!!!)
done
----
Description: Tells a switch that it is ready to be used again (UNLESS it is
a trigger single).
Sent from an elevator.
Sent to a line trigger.
Parameters: none
goto_stop
---------
Description: Sends an elevator to a specified stop.
Sent from a trigger or an elevator.
Sent to an elevator.
Parameters:
[num] -- Stop number to send elevator to.
next_stop
---------
Description: Sends an elevator to its next stop.
Sent from an elevator or trigger.
Sent to an elevator.
Parameters: none
prev_stop
---------
Description: Sends an elevator to its previous stop.
Sent from an elevator or trigger.
Sent to an elevator.
Parameters: none
master_on
---------
description: Turns an elevator's master on.
[NEW] This message also turns on all generators in the recipient
sector with "master: off" set in the .O file.
Sent from an elevator or trigger.
Sent to an elevator (or a normal sector with gens in it).
Parameters: none
master_off
---------
description: Turns an elevator's master off.
Sent from an elevator or trigger.
Sent to an elevator.
Parameters: none
m_trigger
---------
description: Triggers a trigger.
Useful for triggering dummy trigger sectors that display messages
from TEXT.MSG since "text" (see below) can only be sent when a
trigger is triggered.
Sent from an elevator.
Sent to a line trigger or sector trigger.
Parameters: none
clear_bits
----------
description: Clears specified flag bits from a wall or sector. To clear more
than one bit, add the bit values up that you want cleared.
Sent from a trigger or elevator.
Sent to a sector or line.
Parameters:
[flagnum] -- flag number (1, 2 or 3)
[num] -- bit value to clear
set_bits
----------
description: Sets specified flag bits to a sector or wall. To set more than
one bit, add up the bit values that you want to be set.
Sent from a trigger or elevator.
Sent to a sector or line.
Parameters:
[flagnum] -- flag number (1, 2 or 3)
[num] -- bit value to set
wakeup
------
description: [NEW] VUEs with "PAUSE: TRUE" will be played once when this
message is sent to the sector containing the 3DO object.
Sent from an elevator.
Sent to a sector.
Parameters: none
[NEW] lights
------------
description: this message will toggle the ambience of ALL sectors in the level
between their original setting and the value of sector flag 3.
Using sector flag 3 bits 1, 2, 4, 8, and 16 it is possible to
make any ambient level from 0 to 31.
Sent from an elevator or trigger.
Sent to the system (treat it like a sector with name "system",
but make sure there are NO actual sectors called "system"
anywhere in your level.
Parameters: none
7. MISCELLANEOUS
----------------
Here are some other things that I have come across in INF files.
Page
----
"Page" plays a sound effect when an elevator arrives at a stop. "Page" is
placed in an elevator's sequence (between seq and seqend).
Usage:
| page: [stop] [VOC file]
Text
----
"Text" displays a text message from TEXT.MSG on the top of the screen. Add
your own messages on the end of TEXT.MSG if you want! Messages are sent by
triggers when they are triggered. "Text" is placed in a trigger's sequence.
usage:
| text: [text number in text.msg]
Sound
-----
"Sound" replaces the default sound effects of an elevator or switch trigger
with another VOC file or silence. Most elevators have 3 sound effects -
leaving a stop, moving between stops, and arriving at a stop. Switches only
have one sound - when the switch is pressed. "Sound" is placed in an
elevator's or switch trigger's sequence.
usage (replacing a sound effect, elevators):
| sound: [sound value] [VOC file]
usage (replacing a sound effect, triggers):
| sound: [VOC file]
usage (replacing a sound effect with silence, elevators):
| sound: [sound value] 0
usage (replacing a sound effect with silence, triggers):
| sound: 0
adjoin
------
"Adjoin" adjoins a line to another line when an elevator arrives at a stop.
This is required if you need a line to remove its adjoin with one line and
adjoin with another line midway through a level. "Adjoin" is placed in an
elevator's sequence.
For example, in level 6 (detention center), you may notice that the 2 main
lifts have a door on each layer adjoined to it on the same line. Since a line
cannot be adjoined to more than one other line at once, the following occurs:
midway through moving up between 2 layers, the elevator move_floor arrives at
a stop which it remains at for 0 seconds. At this stop, a line of the lift
sector is adjoined to a line of the door sector on the layer above, at the
same time removing its adjoin with a line of the door sector on the layer
below. The lift's doors all appear to be directly on top of each other.
usage:
| adjoin: [stop] [sector name] [line number] [sector name] [line number]
ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
That's all folks! If you have anything to add to this file, if you want
to correct something I have wrong, comment or ask a question, mail me at:
kokjm@stmichaels.vic.edu.au
Any additions or corrections will be put in an updated version of this file.
Please include your name and e-mail address so that I can credit you.
May the Force be With You.